package com.yjy.pay.content;

/**
 * PayConent 即支付上下文，用于存储支付流程中，包括支付、提现、充值、转账等功能
 * 将所有接口的请求参数都封装到PayContent对象中，该对象包含了所有请求参数、校验错误提示信息、以及中途插入数据库的对象（支付用到的订单、订单明细、交易流水、交易流水明细）。
 * 这样在请求银行时只需要使用插入数据库的记录构造银行请求参数进行请求即可。
 *
 * 注：
 *  1、本服务仅保存订单、订单明细、交易流水、交易流水明细这些基础信息表，请求银行的操作由其它服务提供，当然上面这些表已经包含了所有的请求参数。
 *  2、提供开放接口的字段统一用的是这些表字段命名，这样屏蔽了每家银行接口字段名称不同、数量不同的情况。
 *  3、字段值也统一定义，在真正调用银行接口时，针对不同银行字典值不同进行转换（在对接银行接口的服务做）。
 *
 * 主要流程如下：
 * 步骤一：校验参数，包括公共参数、业务参数，校验失败会填充code和msg字段并返回。
 * 步骤二：校验通过后，插入支付用到的数据库记录，包括订单表、订单明细表、交易流水表、交易流水明细表，这几张表也会保存到PayContent中
 * 步骤三：新增订单操作表记录（订单状态为支付中），同时通过PayContent构造银行请求参数，然后请求银行得到银行响应参数（这里一般请求其它服务，本服务只是操作订单表、交易流水表这些，请求银行操作在其它服务，这里统一使用一个接口来对接不同银行的支付接口）
 * 步骤四：将银行响应参数赋值给【公共银行响应类（里面的属性只包含订单表、交易流水表需要更新的字段，后期看有什么缺的补就好了）】，并保存到PayContent中，然后插入银行流水表（用于记录银行放回来明细，用作与凭证）
 * 步骤五：从PayContent中取出公共银行响应类，用于更新订单表、订单明细表、交易流水表、交易流水明细表，并插入一条订单操作记录（支付状态为支付成功或支付失败）
 */
public class PayConent extends ApiReq {

    private String code;
    private String msg;

    /********************/
    private String txOrder; // 订单表
    private String txOrderDtl; // 订单明细
    private String txRec; // 流水表
    private String txRecDtl; // 流水明细

    private String bankRsp; // 公共银行响应类（存放需要的字段，多余字段用json存储）
    /********************/

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }
}
